package com.hong.poi;

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.util.IOUtils;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * @Auther: csh
 * @Date: 2019/12/11 16:59
 * @Description:使用POI创建excel 读取excel
 */
public class PoiTest05 {

    public static void main(String[] args) throws Exception {
        //1.根据excel文件创建工作簿
        Workbook wb = new XSSFWorkbook("D:\\BaiduNetdiskDownload\\008、【店主推荐】springboot2+Vue+shiro云管理系统项目实战\\资料源码文档\\3-8 员工管理及POI\\POI高级\\资源\\百万数据报表\\demo.xlsx");
        //2.获取sheet
        Sheet sheet = wb.getSheetAt(0);
        //3.获取sheet中的每一行和每一个单元格的内容
        for(int rowNum=0;rowNum<=sheet.getLastRowNum();rowNum++){
            Row row = sheet.getRow(rowNum);
            StringBuilder sb = new StringBuilder();
            for(int cellNum=2;cellNum<row.getLastCellNum();cellNum++){
                //根据索引获取每一个单元格
                Cell cell = row.getCell(cellNum);
                //获取每一个单元格的内容
                sb.append(getCellValue(cell)).append("-");

            }
            System.out.println(sb.toString());
        }
        //4.
    }

    public static Object getCellValue(Cell cell){
        //获取单元格的属性类型
        CellType cellType = cell.getCellType();

        //根据单元格数据类型获取数据
        Object value = null;
        switch (cellType){
            case STRING:
                value = cell.getStringCellValue();
                break;
            case BOOLEAN:
                value = cell.getBooleanCellValue();
                break;
            case NUMERIC:
                    //日期
                if(DateUtil.isCellDateFormatted(cell)){
                    value = cell.getDateCellValue();
                }else{
                    //数字
                    value = cell.getNumericCellValue();
                }
                break;
            case FORMULA:
                value = cell.getCellFormula();
                break;
            default:
                break;
        }
        return value;
    }
}
